import java.lang.reflect.Field;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: mac
 * Date: 2022-09-09
 * Time: 20:30
 */
public class TestDemo2 {
    //反射是把双刃剑 - 用在框架中
    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
        String str = "abcde";
        // 获取 String 类中的 value 字段. 这个 value 和 String 源码中的 value 是匹配的.
        Field valueField = String.class.getDeclaredField("value");
        // 将这个字段的访问属性设为 true
        valueField.setAccessible(true);
        // 把 str 中的 value 属性获取到.
        char[] value = (char[]) ((Field) valueField).get(str);
        // 修改 value 的值
        value[0] = 'h';
        System.out.println(str);
    }
    //字符串的拼接会被优化为 StringBuilder对象
    public static void main2(String[] args) {
        String str = "abcde";
        for (int i = 0; i < 10; i++) {
            str += i;//产生更多的对象
        }
        System.out.println(str);
    }
    public static void main1(String[] args) {
        String str = "hello";
        str = str + "world";
        str += "!!!";
        System.out.println(str);
    }
}
